package com.app.hanoitips.travel.maps;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;


public class MapUtils {
 public static ArrayList<String> getAddresses(String sAddress){
	 ArrayList<String> arrAdds=null;
	 try {
		 arrAdds=new ArrayList<String>(Arrays.asList(sAddress.split(";")));
	} catch (Exception e) {
		// TODO: handle exception
		e.printStackTrace();
	}
	 
	 return arrAdds;
 }

	    /** Receives a JSONObject and returns a list */
	    public List<HashMap<String,String>> parse(JSONObject jObject){
	 
	        JSONArray jPlaces = null;
	        try {
	            /** Retrieves all the elements in the 'places' array */
	            jPlaces = jObject.getJSONArray("results");
	        } catch (JSONException e) {
	            e.printStackTrace();
	        }
	        /** Invoking getPlaces with the array of json object
	        * where each json object represent a place
	        */
	        return getPlaces(jPlaces);
	    }
	 
	    private List<HashMap<String, String>> getPlaces(JSONArray jPlaces){
	        int placesCount = jPlaces.length();
	        List<HashMap<String, String>> placesList = new ArrayList<HashMap<String,String>>();
	        HashMap<String, String> place = null;
	 
	        /** Taking each place, parses and adds to list object */
	        for(int i=0; i<placesCount;i++){
	            try {
	                /** Call getPlace with place JSON object to parse the place */
	                place = getPlace((JSONObject)jPlaces.get(i));
	                placesList.add(place);
	 
	            } catch (JSONException e) {
	                e.printStackTrace();
	            }
	        }
	 
	        return placesList;
	    }
	 
	    /** Parsing the Place JSON object */
	    private HashMap<String, String> getPlace(JSONObject jPlace){
	 
	        HashMap<String, String> place = new HashMap<String, String>();
	        String formatted_address = "-NA-";
	        String lat="";
	        String lng="";
	 
	        try {
	            // Extracting formatted address, if available
	            if(!jPlace.isNull("formatted_address")){
	                formatted_address = jPlace.getString("formatted_address");
	            }
	 
	            lat = jPlace.getJSONObject("geometry").getJSONObject("location").getString("lat");
	            lng = jPlace.getJSONObject("geometry").getJSONObject("location").getString("lng");
	 
	            place.put("formatted_address", formatted_address);
	            place.put("lat", lat);
	            place.put("lng", lng);
	 
	        }catch (JSONException e) {
	            e.printStackTrace();
	        }
	        return place;
	    }

 }
